package com.jack006.user.service;

import com.jack006.enums.Sex;
import com.jack006.pojo.vo.FansCountsVO;
import com.jack006.pojo.vo.RegionRatioVO;
import com.jack006.utils.PagedGridResult;

import java.util.List;

/**
 * @Classname MyFansService
 * @Description 粉丝管理 service
 * @Date 2021-07-14 08:42
 * @Created by jack
 */
public interface MyFansService {

    /**
     * 判断用户粉丝
     * @param writerId
     * @param fanId
     * @return
     */
    boolean isMeFollowThisWriter(String writerId,String fanId);

    /**
     * 关注作家
     * @param writerId
     * @param fanId
     */
    void follow(String writerId, String fanId);

    /**
     * 取消关注作家
     * @param writerId
     * @param fanId
     */
    void unFollow(String writerId, String fanId);


    /**
     * 查询我的粉丝列表
     * @param writerId
     * @param page
     * @param pageSize
     * @return
     */
    PagedGridResult queryMyFansList(String writerId, Integer page, Integer pageSize);

    /**
     * 查询我的粉丝列表
     * @param writerId
     * @param sex
     * @return
     */
    Integer queryFansCounts(String writerId, Sex sex);

    /**
     * 从 es 中查询男女粉丝数
     * @param writerId
     * @return
     */
    FansCountsVO queryFansESCounts(String writerId);

    /**
     * 查询我的地域粉丝数量
     * @param writerId
     * @return
     */
    List<RegionRatioVO> queryRegionRatioCounts(String writerId);

    /**
     * 从 es中查询地域粉丝数
     * @param writerId
     * @return
     */
    List<RegionRatioVO> queryRegionRatioESCounts(String writerId);

    /**
     * 被动更新用户信息
     * @param relationId
     * @param fanId
     */
    void forceUpdateFanInfo(String relationId, String fanId);

}
